Namen verwenden
Das Arbeiten mit "Namen" ist eine der wesentlichen Stärken von EXCEL. Namen werden zwar meist dazu verwendet, um Zellbereiche in Tabellen zu beschreiben, aber Namen sind mehr: Sie sind Variable, denen Werte zugewiesen werden können. Dieser Wert kann eine Zelladresse sein, aber genausogut eine Zahl, ein Text, eine Rechenformel usw.
Namen werden in Arbeitsmappen gespeichert. Sie "gehören" zur Arbeitsmappe, in der sie definiert sind. Namen sind Objekte; ihr Container-Objekt ist Names".
Den kompletten Code dieses Abschnittes finden Sie in der Datei "Namen.xls". |
Mit Angabe der Zellen Angenommen, Sie wollen die Zellen A1:A3 in "Tabelle1" der aktiven Arbeitsmappe mit dem Namen "Namensbereich" versehen. Dies geschieht im VBA-Code entweder so:
Sub NameFestlegen1() Sheets("Tabelle1").Select Range("A3:B5").Name = "Testbereich" MsgBox Range("Testbereich").Address(External:=True) End Sub
oder so:
Sub NameFestlegen1a() ActiveWorkbook.Names.Add Name:="Namensbereich", _ RefersToR1C1:="=Tabelle1!R1C1:Z3S1" End Sub
Ausgewählte Zellen benennen Wenn Sie beim Programmieren noch gar nicht wissen können, welche Zellen mit einem Namen benannt werden sollen, müssen Sie so vorgehen:
Sub NameFestlegen2() ActiveWorkbook.Activate Sheets("Tabelle1").Select [A1].CurrentRegion.Activate ActiveWorkbook.Names.Add Name:="Arbeitsbereich", _ RefersTo:="=" + Selection.Address MsgBox Range("Arbeitsbereich").Address(External:=True) End Sub
In diesem Codebeispiel wechselt EXCEL tatsächlich in jenes Blatt, in dem der zu benennende Bereich liegt. Das können Sie vermeiden, indem Sie schreiben:
Sub NameFestlegen3() ActiveWorkbook.Names.Add Name:="Arbeitsbereich", _ RefersTo:="=" + ActiveWorkbook.Sheets("Tabelle1"). _ [A1].CurrentRegion.Address(External:=True) MsgBox Range("Arbeitsbereich").Address(External:=True) End Sub
Zellen eines Zellbereichs-Objektes mit Namen benennen
Sub NameFürBereichsObjektZellenBilden() Set BereichsObjekt = ActiveWorkbook.Sheets("Tabelle1"). _ [A1].CurrentRegion ActiveWorkbook.Names.Add Name:="Namensbereich", _ RefersTo:="=" + BereichsObjekt.Address(External:=True) MsgBox Range("Namensbereich").Address(External:=True) End Sub
Aus benannten Zellen ein Bereichs-Objekt bilden
Sub ObjektAusNamensbereichBilden() Set BereichsObjekt = Evaluate(ActiveWorkbook. _ Names("Namensbereich").Value) MsgBox BereichsObjekt.Address(External:=True) End Sub
Zellen eines Bereichs-Objektes benennen
Sub NameFürBereichsObjektZellenBilden() Set BereichsObjekt = ActiveWorkbook.Sheets("Tabelle1"). _ [A1].CurrentRegion ActiveWorkbook.Names.Add Name:="Namensbereich", _ RefersTo:="=" + BereichsObjekt.Address(External:=True) MsgBox Range("Namensbereich").Address(External:=True) End Sub
Namensbereich in den Vordergrund bringen Wenn Sie wollen, daß EXCEL die Tabelle und Zellen, auf die ein Name verweist, in den Vordergrund bringt (aktiviert), dann verwenden Sie dazu den folgenden Code:
Sub NamensbereichAnspringen1() Application.Goto Reference:= _ ActiveWorkbook.Names("Namensbereich").Name End Sub
Wenn Sie wollen, daß die linke obere Ecke des benannten Bereiches in die linke obere Ecke des Fensters gestellt wird, müssen Sie anordnen:
Sub NamensbereichAnspringen2() Application.Goto Reference:= _ ActiveWorkbook.Names("Namensbereich").Name, _ Scroll:=True End Sub
Benannte Zellen mit Wert versehen Im ersten Beispiel wird der Bereich in den Vordergrund gebracht:
Sub NamensbereichAusfüllen1() Application.Goto Reference:=ActiveWorkbook. _ Names("Namensbereich").Name Selection.Value = "Ausgefüllt" End Sub
Beispiel 2 stellt den Text "Ausgefüllt" in die Zellen des benannten Bereiches, ohne zum Bereich zu wechseln:
Sub NamensbereichAusfüllen2() Evaluate(ActiveWorkbook.Names("Namensbereich").Value).Value = "Test" End Sub
Um dieses Kunststück zusammenzubringen, müssen wir die "Evaluate"-Methode verwenden. Sie bildet aus dem Text, den
ActiveWorkbook.Names("Namensbereich").Value
zurückgibt ("[Namen.XLS]Tabelle1!Z1S1:Z3S1") ein Bereichs-Objekt. Und dem
weisen wir, Zelle für Zelle, nochmals mit "Value" die Zeichenfolge "Test"
zu.
Copyright © by JOANNEUM RESEARCH Forschungsgesellschaft mbH |